# coding:utf8

from qturboframe.public_ui.h_ui.transfer_table import TransferTable as HuiTransferTable
from qturboframe.public_ui.h_ui.simple_table import SimpleTable


class TransferTable(HuiTransferTable):
    '''
    对操作员中心特有的穿梭表格操作进行封装
    '''
    _left_table = SimpleTable
    _right_table = SimpleTable

    def left_table(self, idname=None, father=None):
        '''
        获取左边表格对象
        重写说明：操作员中心内层h-editgird-wrapper标签改为了h-table-wrapper

        :Args:
         - idname: 左边表格的定位条件，字典类型：{'元素查找方式':'元素查找语句', '辅助属性':'辅助属性值'}
         - father: 左边表格的祖先级元素，可以给左边表格查找限定范围，这样就不需要在整个页面中查找

        :Example:
         - 例: left_table = transfer_table.left_table(By.CSS_SELECTOR, 'div.h-table-wrapper')
        '''
        if father is None:
            father = self.left_element
        if idname:
            self._left_table = SimpleTable(idname, father, self.timeout)
        else:
            self._left_table = SimpleTable(
                {'css selector': 'ul.h-transfer-table-list-content>div.h-table-wrapper'},
                father, self.timeout)
        return self._left_table

    def right_table(self, idname=None, father=None):
        '''
        获取右边表格对象
        重写说明：操作员中心内层h-editgird-wrapper标签改为了h-table-wrapper

        :Args:
         - idname: 右边表格的定位条件，字典类型：{'元素查找方式':'元素查找语句', '辅助属性':'辅助属性值'}
         - father: 右边表格的祖先级元素，可以给右边表格查找限定范围，这样就不需要在整个页面中查找

        :Example:
         - 例: right_table = transfer_table.right_table(By.CSS_SELECTOR, 'div.h-table-wrapper')
        '''
        if father is None:
            father = self.right_element
        if idname:
            self._right_table = SimpleTable(idname, father, self.timeout)
        else:
            self._right_table = SimpleTable(
                {'css selector': 'ul.h-transfer-table-list-content>div.h-table-wrapper'},
                father, self.timeout)
        return self._right_table

    def select_left_table(self, table_dict):
        '''
        根据单元格列名和单元格内容勾选左边表格中所在的行
        重写说明:操作员中心SimpleTable调用select_rows方法需要使用滚动操作

        :Args:
         - table_dict: 单元格列名和单元格内容，字典类型，例：{列名1:内容1,列名2:内容2}

        :Example:
         - 例: transfer_table.select_left_table({'姓名':'admin, manager'})
        '''
        self._left_table.select_rows(table_dict, scroll=True)

    def select_right_table(self, table_dict):
        '''
        根据单元格列名和单元格内容勾选右边表格中所在的行
        重写说明:操作员中心SimpleTable调用select_rows方法需要使用滚动操作

        :Args:
         - table_dict: 单元格列名和单元格内容，字典类型，例：{列名1:内容1,列名2:内容2}

        :Example:
         - 例: transfer_table.select_right_table({'姓名':'admin, manager'})
        '''
        self._right_table.select_rows(table_dict, scroll=True)